{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pylab as pl\n",
    "import numpy as np\n",
    "from scipy import signal"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib as mpl\n",
    "mpl.rcParams['font.sans-serif'] = ['SimHei']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 信号处理-signal"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 中值滤波"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    },
    {
     "data": {
      "image/png": "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hx7gY+PYlWOvhb+/vzZNf8WKFdx7770kJCRQVFTEnDlz2Lp1K0ePHqVbt274+flx48YNPvroIwCysrK0PPSJEyd48cUXeeedd+jUqRNpaWkkJiYSFRXF9evXmTZtGiEhIfzwww88+eSTrFixgnvuuaeePtnZ2VoVxt27d9u15eTkMGvWLK2MsI3KykqHTxpws/KjqiipUFiw5djVizZagx8+g2vnXLvPdl2g3/hGRZpyPH379mX16tUYDAbAEgWfPHkSgEuXLmlyPXv2ZPny5Zw4cQKTycTy5cs5ffo0M2bMIDo6mszMTAD69evHV199RXFxMdevX2fDhg2sW7eOBx98kKioKEaOHMnatWvr6WEwGJg/fz47d+6kc+fOdm1Xr15l+PDhbNy4kXPn7G349NNPM2bMGEBVlFQooHbnqYrYfRaTyaR1XNpSMRkZGVRUVNCuXTv69OljV5PlwoULWger0WgkPj5eawsNDeXMmTPodDoWL17MgAEDmD9/PoGBgcycOVOTCw8P591336V///68/vrrZGZmsnfvXl566SWeeOKJejpmZWWRnJzMF198QceOHeu1nzlzhuHDh3PhwgXtBwjgwIED7NmzR/usKkoqFLVKCqgceyvQRGTtLjZs2KB1SNZOxdTNY9vo2LGjVrSr7hDAlJQUoqOjMZvNbN68mYsXL9KrVy/mzZtHRkYG48ePR6/X88EHHwCWVMv8+fMpLi4mOTmZ3Nxcli1bZrfP9PR0MjIyyMrKokOHDg7PITc3l+TkZIdPH009kaiKkoo7jUC9deapjw139E7H7iFqjzKx5Y0BgoKCiIqKAizD/2pqajCbzbRv354RI0YAN2uvm81miouLycrKYuDAgej1en7++WeKiopYtWoVFy5coEePHnz++edERESQkpJCZmYmM2fOpF+/frRp04bIyEjWrl1rV9Vx2rRp3LhxAykle/fuJT4+3s65SykxGAwEBwcTGBhISUmJ3bDJ0tJSxo4dq31WFSUVito5duXY7whslRTrUllZyW+//cbYsWMJCwtjyZIlWlteXh4mk4l+/fqxdOlS1q1bR2JiIt27d2fu3LlMmjSJixcvsnnzZqKjozl+/DgpKSlkZWWRmJjIK6+8wrFjx/juu+9Yv349I0aMYN68eTzyyCMMHjyYuXPncvHiRVatWsWyZcu4cuUKANeuXWPN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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1ff6f587dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=使用中值滤波剔除瞬间噪声\n",
    "t = np.arange(0, 20, 0.1)\n",
    "x = np.sin(t)\n",
    "x[np.random.randint(0, len(t), 20)] += np.random.standard_normal(20)*0.6 #❶\n",
    "x2 = signal.medfilt(x, 5) #❷\n",
    "x3 = signal.order_filter(x, np.ones(5), 2)\n",
    "print (np.all(x2 == x3))\n",
    "pl.plot(t, x, label=u\"带噪声的信号\")\n",
    "pl.plot(t, x2 + 0.5, alpha=0.6, label=u\"中值滤波之后的信号\")\n",
    "pl.legend(loc=\"best\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 滤波器设计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "sampling_rate = 8000.0\n",
    "\n",
    "# 设计一个带通滤波器：\n",
    "# 通带为0.2*4000 - 0.5*4000\n",
    "# 阻带为<0.1*4000, >0.6*4000\n",
    "# 通带增益的最大衰减值为2dB\n",
    "# 阻带的最小衰减值为40dB\n",
    "b, a = signal.iirdesign([0.2, 0.5], [0.1, 0.6], 2, 40) #❶\n",
    "\n",
    "# 使用freq计算滤波器的频率响应\n",
    "w, h = signal.freqz(b, a) #❷\n",
    "\n",
    "# 计算增益\n",
    "power = 20*np.log10(np.clip(np.abs(h), 1e-8, 1e100)) #❸\n",
    "freq = w / np.pi * sampling_rate / 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1ff6f59a518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=用频率扫描波测量的频率响应\n",
    "# 产生2秒钟的取样频率为sampling_rate Hz的频率扫描信号\n",
    "# 开始频率为0， 结束频率为sampling_rate/2\n",
    "t = np.arange(0, 2, 1/sampling_rate) #❶\n",
    "sweep = signal.chirp(t, f0=0, t1=2, f1=sampling_rate/2) #❷\n",
    "# 对频率扫描信号进行滤波\n",
    "out = signal.lfilter(b, a, sweep) #❸\n",
    "# 将波形转换为能量\n",
    "out = 20*np.log10(np.abs(out)) #❹\n",
    "# 找到所有局部最大值的下标\n",
    "index = signal.argrelmax(out, order=3)  #❺\n",
    "# 绘制滤波之后的波形的增益\n",
    "pl.figure(figsize=(8, 2.5))\n",
    "pl.plot(freq, power, label=u\"带通IIR滤波器的频率响应\") \n",
    "pl.plot(t[index]/2.0*4000, out[index], label=u\"频率扫描波测量的频谱\", alpha=0.6) #❻\n",
    "pl.legend(loc=\"best\")\n",
    "#%hide\n",
    "pl.title(u\"频率扫描波测量的滤波器频谱\")\n",
    "pl.ylim(-100,20)\n",
    "pl.ylabel(u\"增益(dB)\")\n",
    "pl.xlabel(u\"频率(Hz)\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 连续时间线性系统"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'位移（米）')"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1ff6f5cc470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=系统的阶跃响应和正弦波响应\n",
    "m, b, k = 1.0, 10, 20\n",
    "\n",
    "numerator = [1]\n",
    "denominator = [m, b, k]\n",
    "\n",
    "plant = signal.lti(numerator, denominator)  #❶\n",
    "\n",
    "t = np.arange(0, 2, 0.01)\n",
    "_, x_step = plant.step(T=t)  #❷\n",
    "_, x_sin, _ = signal.lsim(plant, U=np.sin(np.pi * t), T=t)  #❸\n",
    "#%hide\n",
    "pl.plot(t, x_step, label=u\"阶跃响应\")\n",
    "pl.plot(t, x_sin, label=u\"正弦波响应\")\n",
    "pl.legend(loc=\"best\")\n",
    "pl.xlabel(u\"时间（秒）\")\n",
    "pl.ylabel(u\"位移（米）\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
